#ifndef __MY_MAP_INTERFACE
#define __MY_MAP_INTERFACE

LOCALSTRUCTBASE( MapInterface, public MVMapInterface )
  PModuleOZILoader  Loader;
  PGFLBitmap        Bitmap;
  PMVBitmapProxy    Proxy;
  MyRect            DrawRect;
  GPoint            Center;

  void GV_DECLSPEC idPreviewGetCurrentPositionRect( const MyRect& c, MyRect& r );
  void GV_DECLSPEC idPreviewScrollTo( int ImageWidth, int ImageHeight, int offx, int offy );

  MapInterface( PModuleOZILoader Loader, PGFLBitmap Bitmap );

  virtual void       GV_DECLSPEC Close( void );

  virtual void       GV_DECLSPEC GetGeoArea( GBounds& r ) { r = Loader->MapBounds; }
  virtual bool       GV_DECLSPEC ContainsPoint( const GPoint& p );

  // Zooms
  virtual void       GV_DECLSPEC FillZoomLevels( TStrings *Strings, int& defz );
  virtual int        GV_DECLSPEC GetZoomLevel( const AnsiString& s );
  virtual int        GV_DECLSPEC ValidateZoom( int v );
  virtual int        GV_DECLSPEC IncZoom( int Zoom );
  virtual int        GV_DECLSPEC DecZoom( int Zoom );
  virtual void       GV_DECLSPEC ZoomChanged( int z );

  //Info
  virtual void       GV_DECLSPEC GetMapCaption( AnsiString& str );

  // Geo <-> Raster conversion
  virtual void       GV_DECLSPEC Screen2G( int x, int y, GPoint& gp );
  virtual void       GV_DECLSPEC G2Screen( GCoord_t x, GCoord_t y, MyPoint& sp );

  //Paint
  virtual void       GV_DECLSPEC Paint( TCanvas *dc, MyRect& dr );

  //Scroll
  virtual void       GV_DECLSPEC ScrollTo( int x, int y );
  virtual void       GV_DECLSPEC ScrollToViewPoint( int x, int y, ScrenScrollTypes type );

  //Raster\Preview
  virtual bool       GV_DECLSPEC GetPreviewInfo( PMVRasterInfo p );

  //Loaded map
  virtual PMVMapLoader GV_DECLSPEC GetLoader( void ) { return Loader; }
};

#endif